L'union entre Ruby et C représente un mariage stratégique entre la productivité élevée du développeur de Ruby (élégance) et la vitesse d'exécution bas niveau de C (performances). Chaque processus Ruby commence par l'interpréteur basé sur C ; la commande echo 'puts "Bonjour"' | ruby illustre le point d'entrée où la logique d'hébergement C initialise l'environnement.
1. La monnaie commune (VALUE)
Au cœur de cet entrepôt se trouve le type VALUE type, un pointeur C représentant chaque objet Ruby, y compris Qnil et les chaînes encodées en UTF-8. Il fournit une interface unifiée pour transmettre les données entre les deux langages.
2. Interface et exportation
En utilisant des fonctions utilitaires telles que rb_define_class_under, les développeurs exportent la logique définie en C vers les espaces de noms Ruby. Cette architecture permet d'écrire les fichiers sources de base critiques en performance en C tout en restant accessibles en tant qu'objets Ruby standards. Fichiers sources de la bibliothèque de base à être écrits en C tout en restant accessibles comme objets Ruby standards.
Cette synergie garantit que les structures complexes RData en C sont gérées par le GC Ruby, permettant aux moteurs à haute fréquence de fonctionner à l'intérieur d'envois élégants Ruby.